Python 与 MySQL 进行增删改查的操作以及防止SQL注入 您所在的位置:网站首页 python 增删改查 Python 与 MySQL 进行增删改查的操作以及防止SQL注入

Python 与 MySQL 进行增删改查的操作以及防止SQL注入

2023-06-08 03:41| 来源: 网络整理| 查看: 265

Python 与 MySQL 进行增删改查的操作以及防止SQL注入

在 Python 中使用 MySQL 数据库操作非常方便,通过 PyMySQL 这个第三方库,我们可以轻松地实现 MySQL 数据库的连接、查询、添加、修改和删除等操作。下面通过一个简单的示例来演示如何实现 MySQL 数据库的基本操作。

准备工作

在进行实验前,需要先安装 PyMySQL 库,可以通过以下命令进行安装:

pip install pymysql

我们还需要在 MySQL 中创建一个数据库和一张表,假设我们创建的数据库名为 testdb,表名为 users,包含以下两个字段:

id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age INT(3) NOT NULL 连接数据库

首先,我们需要建立与 MySQL 数据库的连接。可以通过以下代码实现:

import pymysql # 建立数据库连接 conn = pymysql.connect( host='localhost', # 连接的数据库服务器地址 user='root', # 连接的数据库用户名 password='123456', # 连接的数据库密码 db='testdb', # 连接的数据库名称 charset='utf8mb4', # 设定字符集 cursorclass=pymysql.cursors.DictCursor # 以字典类型返回查询结果 ) 插入数据

接下来,我们可以通过以下代码向 users 表中插入一条数据:

# 获取一个游标对象 cursor = conn.cursor() # 插入一行数据 sql = "INSERT INTO users (name, age) VALUES (%s, %s)" cursor.execute(sql, ('张三', 25)) # 提交事务 conn.commit() # 关闭游标和数据库连接 cursor.close() conn.close()

在这段代码中,%s 是使用占位符的方式,可以有效地避免 SQL 注入问题。

查询数据

接下来,我们可以通过以下代码查询 users 表中的所有数据,然后将查询结果打印出来:

# 获取游标对象 cursor = conn.cursor() # 执行查询操作 sql = "SELECT * FROM users" cursor.execute(sql) # 获取查询结果 result = cursor.fetchall() # 输出查询结果 for row in result: print(row) # 关闭游标和数据库连接 cursor.close() conn.close() 更新数据

接下来,我们可以通过以下代码将 users 表中 id 为 1 的数据的 age 字段更新为 30:

# 获取游标对象 cursor = conn.cursor() # 更新一行数据 sql = "UPDATE users SET age = %s WHERE id = %s" cursor.execute(sql, (30, 1)) # 提交事务 conn.commit() # 关闭游标和数据库连接 cursor.close() conn.close() 删除数据

最后,我们可以通过以下代码删除 users 表中 id 为 1 的数据:

# 获取游标对象 cursor = conn.cursor() # 删除一行数据 sql = "DELETE FROM users WHERE id = %s" cursor.execute(sql, 1) # 提交事务 conn.commit() # 关闭游标和数据库连接 cursor.close() conn.close()

以上就是 Python 与 MySQL 数据库进行增删改查的基本操作,通过这些简单的示例,你可以快速入门 PyMySQL 库的使用。

防止 SQL 注入

SQL 注入是一种常见的网络攻击方式,它的原理是通过将恶意 SQL 代码注入到应用程序中,从而获取数据库中的敏感信息。在开发 Python 应用程序时,为了确保程序的安全性,我们需要采取一些措施来防止 SQL 注入的发生。

使用占位符

使用占位符是一种有效的防止 SQL 注入的方式。在使用 SQL 语句时,我们可以通过占位符的方式传递参数,从而避免 SQL 注入的风险。以下代码就是一个使用占位符的示例:

# 获取游标对象 cursor = conn.cursor() # 插入一行数据 sql = "INSERT INTO users (name, age) VALUES (%s, %s)" cursor.execute(sql, ('张三', 25)) # 提交事务 conn.commit() # 关闭游标和数据库连接 cursor.close() conn.close()

在这段代码中,%s 就是占位符,它可以将传递的参数进行处理,从而避免 SQL 注入的风险。

使用参数化查询

参数化查询是另一种有效的防止 SQL 注入的方式。在使用参数化查询时,我们可以将 SQL 语句与参数分离开来,从而避免恶意代码的注入。以下代码就是一个使用参数化查询的示例:

# 获取游标对象 cursor = conn.cursor() # 执行查询操作 sql = "SELECT * FROM users WHERE name = %s" cursor.execute(sql, ('张三',)) # 获取查询结果 result = cursor.fetchall() # 输出查询结果 for row in result: print(row) # 关闭游标和数据库连接 cursor.close() conn.close()

在这段代码中,%s 作为参数传递给 cursor.execute() 函数,而不是直接包含在 SQL 语句中,从而避免了 SQL 注入的风险。

过滤输入内容

在编写 Python 程序时,我们应该对用户输入的内容进行过滤和验证,确保输入的内容符合预期。在处理 SQL 语句时,我们应该过滤掉一些特殊字符,如单引号、双引号、分号等,从而减少 SQL 注入的风险。

总结

以上就是在 Python 中防止 SQL 注入的方式,通过使用占位符、参数化查询和过滤输入内容等方法,我们可以有效地保护 Python 应用程序的安全性,避免 SQL 注入的发生。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有